package org.example.controller;

import org.example.domain.User;
import org.example.domain.response.ResponseResult;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.concurrent.locks.ReentrantReadWriteLock;

public interface UserController {

    /**
     * 通过ID查询用户
     * @param userId 用户ID
     */
    ResponseResult getUserById(int userId);

    /**
     * 管理员新增用户（头像地址默认，密码默认123456，角色为null时为user：普通用户）
     * @param user 用户信息
     */
    ResponseResult saveUser(User user);

    /**
     * 重置用户密码
     * @param userId 用户ID
     */
    ResponseResult resetPasswordById(int userId);

    /**
     * 通过ID删除用户
     * @param userId 用户ID
     */
    ResponseResult deleteUserById(int userId);

    /**
     * 修改用户数据
     * @param user 用户信息（必须包含用户ID）
     */
    ResponseResult updateUser(User user);

    /**
     * 分页查询用户
     * @param currentPage 当前页
     * @param pageSize 页大小
     */
    ResponseResult getUserByPage(int currentPage, int pageSize);

    /**
     * 通过用户名模糊查询用户
     * @param username 用户名
     */
    ResponseResult getUserByUsername(int currentPage, int pageSize, String username);

    /**
     * 用户修改用户密码
     * @param userId 用户ID
     * @param encryptPassword RSA加密后的旧密码
     * @param encryptNewPassword RSA加密后的新密码
     */
    ResponseResult updateUserPassword(int userId, String encryptPassword, String encryptNewPassword);


    /**
     * 用户修改权限
     * @param file 头像文件
     * @param userId 用户Id
     * @return
     */
    public ResponseResult uploadIcon( MultipartFile file, int userId);

    /**
     * 通过userId获取用户头像
     * @param userId
     * @return
     */
//    public ResponseResult getAvatarByUserId(List<Integer> userId);
}
